package org.mil.shell;

import java.io.IOException;
import java.io.InputStream;

import org.mil.logic.PropertyReader;
import org.mil.util.EncodingConverter;

public class MediaInfoCLI{
	protected static String cmd=PropertyReader.getMediaInfoCLIPath();
	static final String COEF_OUTPUT="--Output=";
	static final String DEFAULT_COEF_OUTPUT="xml";
	static final String COEF_INFORM="--Inform=";
	
	/**
	 * 输出整个文件的媒体信息，默认输出格式为xml
	 * 例如："mediainfo --output=xml FileName"
	 * @param fileName 文件名
	 * @return 
	 */
	public static InputStream exportWholeData(String fileName){	
		
		return exportWholeData(fileName,DEFAULT_COEF_OUTPUT);
	}
	
	/**
	 * 输出整个文件的媒体信息
	 * @param fileName 文件名
	 * @param outputType 输出格式
	 * @return
	 */
	public static InputStream exportWholeData(String fileName,String outputType){
		String coef=COEF_OUTPUT+outputType;
		return ExteriorInvoker.invoke(cmd,coef,fileName);
	}
	
	/**
	 * 输出指定的单个属性的数值
	 * Example: "MediaInfo --Inform=Video;%AspectRatio% FileName"
	 * @param fileName 文件名
	 * @param group 该属性值所属分类
	 * @param key 该属性名称
	 * @return
	 */
	public static InputStream exportSingleData(String fileName,String group,String key){
		StringBuffer coef=new StringBuffer(COEF_INFORM);
		coef.append(group).append(';').append('%').append(key).append('%');
		return ExteriorInvoker.invoke(cmd,coef.toString(),fileName);
	}
	
	public static String getSingleData(String fileName,String group,String key){
		InputStream is=exportSingleData(fileName,group,key);
		String data = null;
		try {
			data = EncodingConverter.convertToString(is);
		} catch (IOException e) {				
			e.printStackTrace();
		}
		return data;
	}	
	
 
}
